/*
 * common_queue.h
 *
 *  Created on: 2011-5-3
 *      Author: chenl
 */

#ifndef COMMON_QUEUE_H_
#define COMMON_QUEUE_H_

template <typename T>
class IQueue
{
public:
	IQueue(){}
	virtual ~IQueue(){}
public:
	virtual int32_t Initialize() = 0;
	virtual int32_t Uninitialize() = 0;
public:
	virtual int32_t Push(const T&) = 0;
	virtual int32_t Pop(T&) = 0;
	virtual int32_t Front(T&) const = 0;
	virtual int32_t Back(T&) const = 0;
	virtual void Clear() = 0;
	virtual bool IsEmpty() const = 0;
	virtual bool IsFull() const = 0;
	virtual unsigned Size() const = 0;
	virtual unsigned Capacity() const = 0;
};


#endif /* COMMON_QUEUE_H_ */
